Methods and apparatuses for service discovery

ABSTRACT

Embodiments described herein provide methods and apparatuses for relate to methods and apparatuses for providing processing functions by microservices in a service. A first microservice is capable of providing a first processing function in a service comprising a plurality of microservices. The method includes receiving a processing request to provide the first processing function; obtaining a sequence of a plurality of microservices associated with the processing request, wherein the sequence comprises the first microservice; obtaining a current latency requirement associated with the remaining microservices in the sequence; obtaining an estimated latency associated with the remaining microservices in the sequence; and placing the processing request in a processing queue based on a comparison between the current latency requirement and the estimated latency.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a 35 U.S.C. § 371 national stage application of PCTInternational Application No. PCT/SE2019/050620 filed on Jun. 26, 2019,the disclosure and content of which is incorporated by reference hereinin its entirety.

TECHNICAL FIELD

Embodiments described herein relate to methods and apparatuses forproviding processing functions by microservices in a service.

BACKGROUND

In recent years, with the increasing popularity and maturity oflightweight virtualization technology (for example, the container) themicroservices based architecture has been adopted by more and moreapplications or services.

FIG. 1 illustrates an example of a microservice architecture.

In the microservice architecture a single service is decomposed into aplurality of modular microservices (S1 to S6) which may comprise forexample containers or virtual machines. The microservices may be smallin size, messaging enabled, bounded by contexts, decentralized,deployed, and/or built and released independently with automatedprocess. The microservices may work together and communicate with eachother through a Web Application processing interface (API) 101 (e.g.,RESTful API) or message queues. Each microservice may expose an API andmay be invoked by other microservices or an external client (102 a to102 c). The processing functions performed by each microservice can thenbe used to provide the single service.

There are many scenarios in which such microservice based architecturesmay be used. For example, in the current 3gpp specification for 5G Core(5GC) network, the 5G System architecture may leverage service-basedinteractions between Control Plane (CP) Network Functions whereidentified.

FIG. 2 illustrates an example of a basic Service Based Architecture(SBA) of the core network. Network Functions (NFs) expose theirabilities as services that can be used by other NFs. The NFs maytherefore effectively function as microservices. For example, the Accessand Mobility Management Function (AMF) may provide a service thatenables a different NF to communicate with the UE and/or the AN (AccessNetwork) through the AMF; the Session Management Function (SMF) mayprovide a service that allows consumer NFs to handle the Protocol DataUnit (PDU) sessions of UEs.

The NFs in the core network may expose their services (or processingfunctions) by registering themselves with the NRF (Network RepositoryFunction). The NRF may also offer service discovery to enable differentNFs to find each other.

To achieve a specific procedure in the system based architecture, aseries of microservices performed by different network functions mayneed to be called. For example, in a UE registration procedure, a UE maysend a registration request, the AMF may call the authentication serviceto AUSF (Authentication Sever Function), and the AUSF may call theservice of UDM (Unified Data Management) to retrieve the authenticationrelated data for the UE. This single service, UE registration, istherefore formed from a plurality of chained microservices performed bythe different NFs. Another example could be the PDU sessionestablishment procedure, where the UE may send the PDU sessionestablishment request to AMF, then AMF may call the PDU session servicein SMF, and the SMF may call the UDM's service to retrieve thecorresponding subscription data, after that the SMF may call the servicein PCF (Policy Control Function) to retrieve the corresponding policyfor the PDU session.

SUMMARY

According to some embodiments there is provided a method performed by afirst microservice capable of providing a first processing function in aservice comprising a plurality of microservices. The method comprisesreceiving a processing request to provide the first processing function;obtaining a sequence of a plurality of microservices associated with theprocessing request, wherein the sequence comprises the firstmicroservice; obtaining a current latency requirement associated withthe remaining microservices in the sequence; obtaining an estimatedlatency associated with the remaining microservices in the sequence; andplacing the processing request in a processing queue based on acomparison between the current latency requirement and the estimatedlatency.

According to some embodiments there is provided a method in a servicecall procedure repository, SCPR. The method comprises storing at leastone sequence of microservices; and storing information relating to astep latency associated with each step in each sequence ofmicroservices, wherein a step comprises one of a microservice in thesequence or a hop between pair of adjacent microservices in saidsequence.

According to some embodiments there is provided a method in a monitoringfunction in a network. The method comprises monitoring one or moremicroservices to obtain information relating to a step latencyassociated with each step in at least one sequence of microservices,wherein a step comprises one of a microservice or a hop between pair ofadjacent microservices in said sequence; and transmitting theinformation to a service call procedure repository.

According to some embodiments there is provided a computer systemcomprising processing circuitry and a memory containing a firstmicroservice capable of providing a first processing function in aservice comprising a plurality of microservices. When the firstmicroservice is executed by the processing circuitry it instructs theprocessing circuitry to: receive a processing request to provide thefirst processing function; obtain a sequence of a plurality ofmicroservices associated with the processing request, wherein thesequence comprises the first microservice; obtain a current latencyrequirement associated with the remaining microservices in the sequence;obtain an estimated latency associated with the remaining microservicesin the sequence; and place the processing request in a processing queuebased on a comparison between the current latency requirement and theestimated latency.

According to some embodiments there is provided a service call procedurerepository, SCPR. The SCPR comprises processing circuitry configured to:store at least one sequence of microservices; and store informationrelating to a step latency associated with each step in each sequence ofmicroservices, wherein a step comprises one of a microservice in thesequence or a hop between pair of adjacent microservices in saidsequence.

According to some embodiments there is provided a monitoring function ina network. The monitoring function comprises processing circuitryconfigured to monitor one or more microservices to obtain informationrelating to a step latency associated with each step in at least onesequence of microservices, wherein a step comprises one of amicroservice or a hop between pair of adjacent microservices in saidsequence; and transmit the information to a service call procedurerepository.

BRIEF DESCRIPTION OF THE DRAWINGS

For a better understanding of the embodiments, and to show how they maybe put into effect, reference will now be made, by way of example only,to the accompanying drawings, in which:—

FIG. 1 illustrates an example of a microservice architecture;

FIG. 2 illustrates an example of a basic Service Based Architecture ofthe core network;

FIG. 3 illustrates an example of a microservice chain architecture;

FIG. 4 illustrates a microservice in a service;

FIG. 5 illustrates a method performed by a microservice;

FIGS. 6 a and 6 b illustrate an example of the scheduling and processingof a processing request by a microservice;

FIG. 7 illustrates a computer system comprising processing circuitry (orlogic);

FIG. 8 illustrates a SCPR comprising processing circuitry (or logic);

FIG. 9 illustrates a monitoring function comprising processing circuitry(or logic).

DESCRIPTION

Generally, all terms used herein are to be interpreted according totheir ordinary meaning in the relevant technical field, unless adifferent meaning is clearly given and/or is implied from the context inwhich it is used. All references to a/an/the element, apparatus,component, means, step, etc. are to be interpreted openly, as referringto at least one instance of the element, apparatus, component, means,step, etc., unless explicitly stated otherwise. The steps of any methodsdisclosed herein do not have to be performed in the exact orderdisclosed, unless a step is explicitly described as following orpreceding another step and/or where it is implicit that a step mustfollow or precede another step. Any feature of any of the embodimentsdisclosed herein may be applied to any other embodiment, whereverappropriate. Likewise, any advantage of any of the embodiments may applyto any other embodiments, and vice versa. Other objectives, features andadvantages of the enclosed embodiments will be apparent from thefollowing description.

Some of the embodiments contemplated herein will now be described morefully with reference to the accompanying drawings. Other embodiments,however, are contained within the scope of the subject matter disclosedherein, the disclosed subject matter should not be construed as limitedto only the embodiments set forth herein; rather, these embodiments areprovided by way of example to convey the scope of the subject matter tothose skilled in the art.

In a microservice based application, the processing request from aclient may involve multiple interactions among the microservices inorder to provide the service, for example, as shown in the FIG. 1 , aprocessing request to microservice s1 will trigger the invocation ofservice s2, and consequently s4 and s6 will be called, i.e., theprocessing request will introduce a microservice call sequence. Based onthe type of the processing request (e.g. UE registration, etc),different microservice call sequences may be invoked for each incomingprocessing request.

For a specific processing request, it may be desirable that the serviceis provided within a certain time limit. For example, UE registration asdescribed above, may be required to be finished within 100 ms, or ahandover procedure may be required to be finished within 50 ms, etc.These delay requirements may be important for the Quality of Service (orQuality of Experience) for some latency sensitive use cases, e.g.gaming, Augmented or Virtual Reality (AR/VR), etc. Since differentservice requests may have different latency (time) requirements, it maybe desirable that the microservice requests to the same microservice,but belonging to different service requests, be treated differently.

For example, both the UE registration service request and PDU sessionestablishment service request may need to call the AUSF authenticationservice as a microservice. However, the UE registration service requesthas a larger number of further microservice calls in the sequence afterthe authentication than those in the PDU session establishment servicerequest. Therefore, the time budget for the authentication service inthe UE registration service request may be smaller than the time budgetfor the authentication service in the PDU session establishment servicerequest. Hence it may be desirable that AUSF prioritizes theauthentication request for the UE registration procedure.

In embodiments described herein therefore the service request invoking amicroservice chain may be scheduled dynamically in each microservice ofthe chain according to a dynamically modified latency requirement basedon the remaining service chain of the service request.

FIG. 3 illustrates an example of a microservice chain architecture. Theservice 300 comprises a chain of microservices 301 a to 301 e. A requestfor the service from a client may invoke a microservice call sequence toimplement each of the microservices 301 a to 301 e. A SCPR (ServiceChain Procedure Repository) 302 may be used to store Service ChainProcedures (SCPs) associated with different services (for example, thetype of request).

A Service Chain Procedure for a service (or a type of request) maycomprise the sequence of microservices for that service. The ServiceChain Procedure may also comprise information relating to a step latencyassociated with each step in the sequence of microservices, wherein astep comprises one of a microservice in the sequence or a hop betweenpair of adjacent microservices in said sequence. The SCP may alsocomprise information relating to a latency requirement associated withthe sequence of microservices.

An example Service Chain Procedure may be given as:

{p1, rt, L_(r), (s1, s2, s4), (<s1, 5 ms>, <s1-s2, 10 ms>, <s2, 3 ms>,<s2-s4, 5 ms>, <s4, 5 ms>)}

in which ‘p1’ is the identity of the SCP, ‘rt’ denotes the type of therequest (for example, the service), ‘L_(r)’ denotes the total latencyrequirement on this type of request, (s1, s2, s4) describes the servicecall sequence of this type of request, and {<s1, 5 ms>, <s1-s2, 10 ms>,<s2, 3 ms>, <s2-s4, 5 ms>, <s4, 5 ms>} denotes the correspondingestimated latency for each step in this sequence of microservices.

The sequence of microservices may be determined by analyzing theinternal logic of the service for each type of request. Usually thesequence of microservices is static when the service is implemented andmay only need be changed when the internal structure and interfaces ofthe service is changed.

The estimated latency for each step in the sequence of microservices maybe generated by a monitoring function 303, which may consistentlymonitor the latency introduced in each microservice and the latencybetween two microservices.

The monitoring function 303 may therefore be configured to monitor oneor more microservices (for example microservice 301 a to 301 e) toobtain the information relating to a step latency associated with eachstep in at least one sequence of microservices, wherein a step comprisesone of a microservice or a hop between pair of adjacent microservices insaid sequence. The monitoring function 303 may also then be configuredto transmit the information to the SCPR 302.

The SCPR 302 may retrieve the latest estimated latency for all storedService Chain Procedure from the Monitoring Function 303. Theinformation relating to the estimated latencies may be obtainedperiodically, or may be obtained responsive to a new service request, orany other suitable method.

The microservices 301 a to 301 e within the service 300 may retrieve theService Chain Procedure (SCP) from the SCPR 302 and may synchronize withthe SCPR 302 periodically.

The SCPR 302 may therefore be configured to receive a sequence requestfrom a first microservice (for example microservice 301 a), wherein thesequence request comprises a type of request. The type of request mayfor example indicate the service 300. The SCPR 302 may then select afirst sequence from one or more stored sequences, wherein the firstsequence is associated with the type of request. For example, the SCPR302 may select the SCP associated with the service indicated in thesequence request.

The SCPR 302 may then transmit the first sequence (for example, the SCP)to the first microservice.

FIG. 4 illustrates a microservice 401 in a service 400.

In this example, the microservice 401 comprises several functions: ascheduler 402, Processing Queue (PQ) 403, Processing Function (PF) 404,Routing Function (RF) 405, Synchronization Function (SF) 406, and LocalRepository 407. These functions shown in the figure may be containedwithin each microservice in the sequence.

It will be appreciated that the functional blocks illustrated in FIG. 4may be implemented differently, and that different steps of the methoddescribed below in FIG. 5 may be implemented by one or more of thefunctional blocks, or additional functional blocks.

FIG. 5 illustrates a method performed by a microservice, for example themicroservice 401 illustrated in FIG. 4 .

In step 501, the microservice receives a processing request to provide afirst processing function. For example, the processing request may bereceived at the scheduler 402. The first processing function may be thefunction performed by the Processing Function 404.

In step 502 the microservice obtains a sequence of a plurality ofmicroservices associated with the processing request, wherein thesequence comprises the first microservice.

Step 502 may for example comprise the scheduler 402 transmitting asequence request to a local repository comprising a type of requestassociated with the processing request; and receiving the sequence fromthe local repository. For example, the scheduler 402 may retrieve an SCPfrom the local repository 407. The local repository 407 may be updatedby the Synchronization Function 406, which may receive the SCPs from theSCPR 302. The updates from the SCPR may, for example, be receivedperiodically, or when there is some change to an SCP that the SCPR 302reports to the local repository 407.

The SCPs received from the SCPR 302 may be SCPs that are in use by thelocal repository 407. For example, if the local repository 407 has notreceived a sequence request from the scheduler for a type of requestassociated with a particular SCP for a predetermined period of time, itmay signal to the SCPR to stop updating that particular SCP.

Also, if the local repository 407 receives a sequence request for a typeof request associated with an SCP that has not been updated for apredetermined period of time, or that the local repository does not havestored, the local repository 407 may retrieve the SCP from the SCPR 302.

In step 503, the microservice obtains a current latency requirementassociated with the remaining microservices in the sequence. Forexample, the current latency requirement may be obtained based on aprevious latency requirement that may form part the processing request.For example, the current latency requirement may indicate a latencyrequirement or target associated with the remainder of the microservicesin the sequence including the current microservice. This may becalculated from the previous latency requirement which was thedetermined current latency requirement by the previous microservice inthe sequence (or the original total latency requirement). The previouslatency requirement may be received as a field in the processingrequest.

In step 504, the microservice obtains an estimated latency associatedwith the remaining microservices in the sequence. For example, theestimated latency associated with the remaining microservices in thesequence may be calculated (for example by the scheduler 402) from theinformation in the SCP relating to the estimated latency associated witheach step in the sequence. An example of how the estimated latencyassociated with the remaining microservices may be obtained is describedin more detail with reference to FIG. 6 below.

In step 506, the microservice places the processing request in aprocessing queue based on a comparison between the current latencyrequirement and the estimated latency. For example, the scheduler 402may place the processing request in the Processing Queue 403.

The scheduler 402 may therefore be configured to receive the processingrequest either from a user or application directly or from a previousmicroservice in the sequence, and may then schedule the processingrequest into the Processing Queue 403 according the priority of theprocessing request which may be determined based on one or moreconditions.

The microservice may then also process requests in the processing queueby providing the first processing function to requests in the processingqueue in an order according to priority of the processing requests inthe processing queue.

In some embodiments, the Processing Queue 403 may comprise severalqueues which have different priorities to be processed by the ProcessingFunction (PF). The PF is the function that process the processingrequest by performing the first processing function, and for eachmicroservice, the function performed by the processing function 404 maybe different.

As each microservice may have multiple instance running in the cloudplatform, if the current microservice need call another microservice,the Routing Function (RF) 405 may be responsible for choosing a runninginstance of the next microservice in the sequence.

In order for the microservice to determine the current latencyrequirement and the estimated requirement, a number of additional fieldsmay be included in the processing request. For example, the processingrequest may comprise fields indicating: the type of request, theprevious latency requirement, and a timestamp. The type of requestindicates the type of the current service request which can be used toretrieve the SCP as described above. The type of request may be set onceby either an application or user, or by an entry microservice, i.e., thefirst microservice in the sequence that serves the request. The previouslatency requirement denotes the desired maximum latency for remainder ofthe sequence of microservices. It is set by the entry microserviceinitially (as the total latency requirement which may be obtained aspart of the SCP), and may be dynamically adjusted by the followingserving microservices in the sequence. The timestamp denotes the timewhen each microservice receives the request. It may be assumed the timeclock at each microservice is synchronized by protocols for exampleNetwork Time Protocol (NTP).

FIGS. 6 a and 6 b illustrate an example of the scheduling and processingof a processing request by a microservice.

In step 601, a processing request is received. As previously describedthe processing request may be received from a user or application (forexample, where the receiving microservice is the first microservice inthe sequence), or from a previous microservice in the sequence.

In step 602, the scheduler reads the type of request, previous latencyrequirement and the timestamp from the processing request.

In step 603, the scheduler transmits a sequence request to the localrepository comprising the type of request read from the processingrequest in step 602. As previously mentioned, the local repository mayretrieve the SCP from the SCPR 302 if the stored SCP is not up to date,or is missing. In some cases, there may be no corresponding SCP for thetype of request, and default policies may be used to schedule theprocessing request into the processing queue 404 in step 604.

In step 605, the scheduler 402 reads the SCP retrieved in step 603.

In step 606, the scheduler 402 may calculate an elapsed time bycomparing the timestamp to a current time.

For example, the scheduler 402 may calculate the elapsed time (L_(e))for the received processing request as the difference between thetimestamp (T_(t)) and the current time according to the microservice(T_(c)), which could be denoted as L_(e)=T_(c)−T_(t).

In examples where the microservice receiving the processing request isthe first microservice in the sequence, the elapsed time may be zero.

In step 607, the scheduler 402 may calculate the current latencyrequirement (L_(r_C)). If the microservice receiving the processingrequest is the first microservice in the sequence then the currentlatency requirement may be set equal to the total latency requirementL_(r) in the SCP. Otherwise, the current latency requirement (L_(r_C))may be calculated as L_(r, c)=L_(r_p)−L_(e), in which L_(r_p) is theprevious latency requirement read from the processing request in step602.

In step 608 the scheduler 402 may updating the processing request byupdating the previous latency requirement field with the value of thecurrent latency requirement calculated in step 607. The scheduler 402may also update the timestamp field in the processing request with thecurrent time.

In step 609, the scheduler 402 calculates the estimated latency(L_(tes)). In particular, as previously mentioned, the sequence (e.g. toSCP) comprises an indication of a step latency associated with each stepin the sequence, wherein a step comprises one of a microservice or a hopbetween pair of adjacent microservices in the sequence.

Step 609 may therefore comprise calculating a sum of the step latenciesassociated with each remaining step in the sequence. For example, forthe SCP:

(p1, rt, L_(r), (s1, s2, s4), (<s1, 5 ms>, <s1-s2, 10 ms>, <s2, 3 ms>,<s2-s4, 5 ms>, <s4, 5 ms>))

If the current microservice is s2, then the remaining steps in thesequence are:

<s2, 3 ms>, <s2-s4, 5 ms>, <s4, 5 ms>.

Therefore the estimated latency associated with the remainder of thesequence (L_(tes)) in this example is 13 ms.

In step 610, the scheduler 402 places the processing request in theprocessing queue 405.

For example, the scheduler may schedule the request based on thecalculated values of L_(r,c), L_(tes) and the type of the ProcessingQueue. For example, the Processing Queue may comprise a multi-levelqueue, in other words, a queue with a pre-defined number of levels. Theprocessing request may then be assigned a particular level or priority.Each level of the processing queue 405 may use its own scheduling forexample, a round-robin.

For example, if the Processing Queue is a three-level queue (q1, q2,q3), in which q3 has the highest priority, and q1 has the lowestpriority.

The scheduler may calculate a value delta, Δ, whereΔ=(L_(r,c)−L_(tes))/L_(r,c). The scheduler may then, position theprocessing request in the processing queue based on the value of delta.In some examples, the scheduler may position the processing request withhigher priority in the processing queue with increasing delta.

In this example, if |Δ|<μ, then the processing request may be assignedto level q2, i.e., the middle level; if Δ≥μ, the processing request maybe assigned to level q1; if Δ≤−μ, the processing request may be assignedto level q3. μ may be a predefined parameter, e.g., it may be set to0.1.

For example, if microservice s2 receives a processing request whose SCPis {p1, t1, 30 ms, (s1, s2, s4), (<s1, 5 ms>, <s1-s2, 10 ms>, <s2, 3ms>, <s2-s4, 5 ms>, <s4, 5 ms>)}, The measured elapsed latency (L_(e))from s1 to s2 is 20 ms, then the new latency requirementL_(r_c)=L_(p,r)−L_(e)=10 ms. The total estimated latency (L_(te)) of theremaining sequence is <s2>+<s2-s4>+<s4>=13 ms. Thus, in this example,Δ=−0.3, if μ is set to 0.1, the processing request may be assigned tolevel q3 which has the highest priority. It will be appreciated thatother types of queue and other scheduling algorithms may be used.

In step 611, the queue provides the processing requests in theprocessing queue to the processing function 404 to be processed in anorder according to priority in the processing queue. For example, in theexample described above, the processing queue may provide requests inthe queue q3 to the processing function to be processed before providingthe processing requests in the queue q2. Similarly, the processingrequests in the queue q2 may be processed before the requests in q1.

In step 612, the processing function 404 handles the processing request.For example, the processing function 404 may perform the firstprocessing function.

In step 613 the processing function 404 determines whether there are anyfurther microservices in the sequence. If there are no furthermicroservices in the sequence, the method passes to step 614 in whichthe processing ends and a reply can be sent to the user or applicationon completion of the service.

If there are further microservices in the sequence, the method passes tostep 615 in which, the processing function 404 updates the processingrequest to generate an updated processing request with the appropriatefield values as set in step 608.

In step 616 the updated processing request is sent to the routingfunction 405.

In step 617, the routing function 405 selects a running instance of thenext microservice in the sequence, for example, according to pre-definedrouting and load balancing policies. Optionally, the routing function405 may also select the instance according to the calculated value of Δ.For example, if Δ<0, the routing function 405 could select a runninginstance that has less than average estimated latency between it and thecurrent microservice instance.

In step 618, the routing function 405 transmits the updated processingrequest to the selected instance of the next microservice in thesequence.

FIG. 7 illustrates a computer system 700 comprising processing circuitry(or logic) 701. The processing circuitry 701 controls the operation ofthe computer system 700 and can implement the method described herein inrelation to a first microservice. The processing circuitry 701 cancomprise one or more processors, processing units, multi-core processorsor modules that are configured or programmed to control the computersystem 700 in the manner described herein. In particularimplementations, the processing circuitry 701 can comprise a pluralityof software and/or hardware modules that are each configured to perform,or are for performing, individual or multiple steps of the methoddescribed herein in relation to the first microservice.

Briefly, the processing circuitry 701 of the computer system 700 isconfigured to: receive a processing request to provide the firstprocessing function; obtain a sequence of a plurality of microservicesassociated with the processing request, wherein the sequence comprisesthe first microservice; obtain a current latency requirement associatedwith the remaining microservices in the sequence; obtain an estimatedlatency associated with the remaining microservices in the sequence;place the processing request in a processing queue based on a comparisonbetween the current latency requirement and the estimated latency.

In some embodiments, the computer system 700 may optionally comprise acommunications interface 702. The communications interface 702 of themicroservice 700 can be for use in communicating with other nodes, suchas other virtual nodes. For example, the communications interface 702 ofthe computer system 700 can be configured to transmit to and/or receivefrom other nodes requests, resources, information, data, signals, orsimilar. The processing circuitry 701 of the computer system 700 may beconfigured to control the communications interface 702 of the computersystem 700 to transmit to and/or receive from other nodes requests,resources, information, data, signals, or similar.

The computer system 700 comprises a memory 703 containing the firstmicroservice which, when executed by the processing circuitry instructsthe processing circuitry to perform the steps described above. In someembodiments, the memory 703 of the computer system 700 can be configuredto store program code that can be executed by the processing circuitry701 of the microservice 700 to perform the method described herein inrelation to the microservice 700. Alternatively or in addition, thememory 703 of the computer system 700, can be configured to store anyrequests, resources, information, data, signals, or similar that aredescribed herein. The processing circuitry 701 of the computer system700 may be configured to control the memory 703 of the computer system700 to store any requests, resources, information, data, signals, orsimilar that are described herein.

FIG. 8 illustrates a SCPR 800 comprising processing circuitry (or logic)801. The processing circuitry 801 controls the operation of the SCPR 800and can implement the method described herein in relation to an SCPR800. The processing circuitry 801 can comprise one or more processors,processing units, multi-core processors or modules that are configuredor programmed to control the SCPR 800 in the manner described herein. Inparticular implementations, the processing circuitry 801 can comprise aplurality of software and/or hardware modules that are each configuredto perform, or are for performing, individual or multiple steps of themethod described herein in relation to the SCPR 800.

Briefly, the processing circuitry 801 of the SCPR 800 is configured to:store at least one sequence of microservices; and store informationrelating to a step latency associated with each step in each sequence ofmicroservices, wherein a step comprises one of a microservice in thesequence or a hop between pair of adjacent microservices in saidsequence.

In some embodiments, the SCPR 800 may optionally comprise acommunications interface 802. The communications interface 802 of theSCPR 800 can be for use in communicating with other nodes, such as othervirtual nodes. For example, the communications interface 802 of the SCPR800 can be configured to transmit to and/or receive from other nodesrequests, resources, information, data, signals, or similar. Theprocessing circuitry 801 of the SCPR 800 may be configured to controlthe communications interface 802 of the SCPR 800 to transmit to and/orreceive from other nodes requests, resources, information, data,signals, or similar.

Optionally, the SCPR 800 may comprise a memory 803. In some embodiments,the memory 803 of the SCPR 800 can be configured to store program codethat can be executed by the processing circuitry 801 of the SCPR 800 toperform the method described herein in relation to the SCPR 800.Alternatively or in addition, the memory 803 of the SCPR 800, can beconfigured to store any requests, resources, information, data, signals,or similar that are described herein. The processing circuitry 801 ofthe SCPR 800 may be configured to control the memory 803 of the SCPR 800to store any requests, resources, information, data, signals, or similarthat are described herein.

FIG. 9 illustrates a monitoring function 900 comprising processingcircuitry (or logic) 801. The processing circuitry 901 controls theoperation of the monitoring function 900 and can implement the methoddescribed herein in relation to an monitoring function 900. Theprocessing circuitry 901 can comprise one or more processors, processingunits, multi-core processors or modules that are configured orprogrammed to control the monitoring function 900 in the mannerdescribed herein. In particular implementations, the processingcircuitry 901 can comprise a plurality of software and/or hardwaremodules that are each configured to perform, or are for performing,individual or multiple steps of the method described herein in relationto the monitoring function 900.

Briefly, the processing circuitry 901 of the monitoring function 900 isconfigured to: monitor one or more microservices to obtain informationrelating to a step latency associated with each step in at least onesequence of microservices, wherein a step comprises one of amicroservice or a hop between pair of adjacent microservices in saidsequence; and transmit the information to a service call procedurerepository.

In some embodiments, the monitoring function 900 may optionally comprisea communications interface 902. The communications interface 902 of themonitoring function 900 can be for use in communicating with othernodes, such as other virtual nodes. For example, the communicationsinterface 902 of the monitoring function 900 can be configured totransmit to and/or receive from other nodes requests, resources,information, data, signals, or similar. The processing circuitry 901 ofthe monitoring function 900 may be configured to control thecommunications interface 902 of the monitoring function 900 to transmitto and/or receive from other nodes requests, resources, information,data, signals, or similar.

Optionally, the monitoring function 900 may comprise a memory 903. Insome embodiments, the memory 903 of the monitoring function 900 can beconfigured to store program code that can be executed by the processingcircuitry 901 of the monitoring function 900 to perform the methoddescribed herein in relation to the monitoring function 900.Alternatively or in addition, the memory 903 of the monitoring function900, can be configured to store any requests, resources, information,data, signals, or similar that are described herein. The processingcircuitry 901 of the monitoring function 900 may be configured tocontrol the memory 903 of the monitoring function 900 to store anyrequests, resources, information, data, signals, or similar that aredescribed herein.

Embodiments described herein therefore provide methods and apparatusesfor providing a first processing function in a first microservice. Inparticular, the methods and apparatuses described herein allow fordynamically prioritizing the processing requests based on the real timemeasured latency and estimated latency together, so that the latencyrequirement for the processing requests can be better fulfilled in eachmicroservice in the sequence. The proposed mechanism may also be appliedto other chain-based services in addition to microservice basedservices. The proposed mechanism may also be applied to service meshbased microservices.

It should be noted that the above-mentioned embodiments illustraterather than limit the invention, and that those skilled in the art willbe able to design many alternative embodiments without departing fromthe scope of the appended claims. The word “comprising” does not excludethe presence of elements or steps other than those listed in a claim,“a” or “an” does not exclude a plurality, and a single processor orother unit may fulfil the functions of several units recited in theclaims. Any reference signs in the claims shall not be construed so asto limit their scope.

The invention claimed is:
 1. A method performed by a first microservicecapable of providing a first processing function in a service comprisinga plurality of microservices, the method comprising: receiving aprocessing request to provide the first processing function; receiving asequence of a plurality of microservices associated with the processingrequest from a local repository, the local repository being updated by aService Chain Procedure Repository, wherein the sequence comprises thefirst microservice; obtaining a current latency requirement associatedwith remaining microservices in the sequence; obtaining an estimatedlatency associated with the remaining microservices in the sequence; andplacing the processing request in a processing queue based on acomparison between the current latency requirement and the estimatedlatency.
 2. The method as claimed in claim 1 further comprising:receiving the processing request from a previous microservice in thesequence, an application or a user.
 3. The method as claimed in claim 1wherein the step of retrieving comprises: transmitting a sequencerequest to the local repository comprising a type of request associatedwith the processing request; and receiving the sequence from the localrepository.
 4. The method as claimed in claim 1, wherein the processingrequest comprises a timestamp.
 5. The method as claimed in claim 1,wherein the processing request comprises a previous latency requirement.6. The method as claimed in claim 5 wherein the processing requestcomprises a timestamp, and, wherein the step of obtaining the currentlatency requirement comprises: calculating an elapsed time by comparingthe timestamp to a current time; and subtracting the elapsed time fromthe previous latency requirement to determine the current latencyrequirement.
 7. The method as claimed in claim 6 further comprising:updating the processing request by: updating the timestamp with thecurrent time, and updating the previous latency requirement with thecurrent latency requirement.
 8. The method as claimed in claim 7 furthercomprising: transmitting the updated processing request to a nextmicroservice in the sequence.
 9. The method as claimed in claim 1wherein the sequence comprises an indication of a step latencyassociated with each step in the sequence, wherein a step comprises oneof a microservice or a hop between pair of adjacent microservices in thesequence.
 10. The method as claimed in claim 6 wherein the step ofobtaining an estimated latency associated with the remainingmicroservices in the sequence comprises: calculating a sum of the steplatencies associated with each remaining step in the sequence.
 11. Themethod as claimed in claim 1 further comprising comparing the currentlatency requirement to the estimated latency by calculating delta, Δ,where Δ=(Lr,c −Ltes)/ Lr,c , where Ltes is the estimated latency andLr,c is the current latency requirement.
 12. The method as claimed inclaim 1 wherein the step of placing the processing request in aprocessing queue comprises: positioning the processing request in theprocessing queue based on a value of delta.
 13. The method as claimed inclaim 1 further comprising: processing requests in the processing queueby providing the first processing function to requests in the processingqueue in an order according to priority in the processing queue.
 14. Acomputer system comprising processing circuitry and a memory containinga first microservice capable of providing a first processing function ina service comprising a plurality of microservices, which, when executedby the processing circuitry instructs the computer system to performoperations comprising: receiving a processing request to provide thefirst processing function; obtaining a sequence of a plurality ofmicroservices associated with the processing request, wherein thesequence comprises the first microservice; obtaining a current latencyrequirement associated with remaining microservices in the sequence;obtaining an estimated latency associated with the remainingmicroservices in the sequence; and placing the processing request in aprocessing queue based on a comparison between the current latencyrequirement and the estimated latency.